Today, counters are widely used in various applications for measurement or data collection. Conventionally, multiple counters are used to maintain counts that span across a lengthy period of time. According to one conventional approach, different counters are associated with different count intervals and a separate index is maintained for each count interval. Using separate merge processes, new counts are computed and stored in the counters, which may run continuously. Likewise, memory reclamation under this conventional approach is a separate process, which prunes large amounts of data at once.
However, the above conventional approach suffers from many disadvantages. For example, the above approach uses a lot of memory storage in order to maintain the counters and their indices. Furthermore, the separate merge processes also place a burden on the overall processing. Another disadvantage of the conventional approach is the large granularity of the memory reclamation, which leads to a larger requirement for processing and memory capacity.